home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib31b.dsk
/
COPYA ENHANCED.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
5KB
|
79 lines
0 TEXT
10 REM ************************
20 REM * DISK COPY *
30 REM * COPYRIGHT BY *
40 REM * APPLE COMPUTER,INC. *
50 REM * 1980 *
55 REM *ENHANCED BY ANDY TUXEN*
60 REM ************************
70 PRINT "<CTRL-D>BLOAD COPY.OBJ0": REM A$2C0
80 HOME : PRINT " APPLE DISK DUPLICATION PROGRAM": PRINT : PRINT
81 D$ = CHR$(4): REM ADDED FOR BUILDING CATALOG ENTRY
90 CALL 704:CS = PEEK(718)/16
100 POKE 715, PEEK(110) +2: REM BUFSTART. CHANGED FROM +1 TO +2 TO RESERVE A PAGE FOR VARIABLES NOT YET DEFINED.
110 POKE 716, PEEK(112) -1: REM BUFEND
130 I$ = " ORIGINAL":N = CS:A = 718: GOSUB 310:MS = N:N = PEEK(720): GOSUB 320:MD = N:A = 717
132 I$ = "DUPLICATE":N = MS: GOSUB 310:SS = N:N = 3 -MD: GOSUB 320:SD = N
160 FT = 1
163 VTAB 5: HTAB 24: PRINT " ": VTAB 8: HTAB 24: PRINT " "
165 CALL 704: POKE 717,SS *16: POKE 718,MS *16: POKE 719,SD: POKE 720,MD
170 VTAB 17: POKE 34,16: CALL -936
175 HOME : POKE 222,0
180 PRINT "-- PRESS 'RETURN' KEY TO BEGIN COPY --";: INPUT " ";I$
185 HOME
190 DK$ = " ORIGINAL": GOSUB 360: REM GET ORIG DISK
191 IF NOT FT THEN 200
192 IOB = PEEK(60) + PEEK(61) *256: POKE IOB +1,MS *16: POKE IOB +2,MD: POKE IOB +3,0: POKE IOB +8,13: POKE IOB +9, PEEK(715):RWTS = PEEK(715) *256:BF = RWTS +13
193 RESTORE : FOR I = RWTS TO RWTS +12: READ D: POKE I,D: NEXT : DATA 32,227,3,32,217,3,144,4,169,1,133,222,96
194 POKE IOB +4,17: POKE IOB +5,0: POKE IOB +12,1: GOSUB 395: POKE IOB +4, PEEK(BF +1): POKE IOB +5, PEEK(BF +2): GOSUB 395:N$ = "": FOR I = 1 TO 10:N$ = N$ + CHR$( PEEK(BF +13 +I) -128): NEXT : IF N$ < >"@BACKED UP" THEN 400
195 CS = 0: FOR I = 1 TO 7:SA = -16384 +256 *I: IF PEEK(SA) = 8 AND PEEK(SA +1) = 120 AND PEEK(SA +2) = 40 THEN SL = I:I = 8
196 NEXT : IF SL >0 THEN PRINT D$;"PR#";SL: PRINT D$"IN#";SL: INPUT "%";T$: PRINT D$;"IN#0": PRINT D$;"PR#0":T$ = LEFT$(T$,16) + RIGHT$(T$,3)
197 IF T$ = "" THEN VTAB 20: HTAB 1: PRINT "ENTER DATE/TIME STAMP(19 CHAR: MAX)": INPUT T$: HOME : IF LEN(T$) <19 THEN T$ = T$ + LEFT$(" ",19 - LEN(T$)): REM 19 BLANKS IN ABOVE
198 FOR I = 1 TO 19: POKE BF +24 +I, ASC( MID$ (T$,I,1)) +128: NEXT
199 POKE IOB +12,2: GOSUB 395
200 VTAB 5: HTAB 24: INVERSE : PRINT "READING": NORMAL : CALL 707: REM READ A HUNK
210 IF PEEK(713) = 2 THEN 280: REM ERROR!
225 VTAB 5: HTAB 24: PRINT " ": IF PEEK(713) = 1 THEN 290
230 IF NOT FT THEN 255: REM NOT FIRST RD
232 FT = 0: VTAB 20: HTAB 1: PRINT "INITIALIZE DISK?";: GET A$: HOME : IF A$ = "N" THEN 255
233 IF A$ < >"Y" THEN 232
240 DK$ = "DUPLICATE": GOSUB 360: REM GET DUP DISK
245 ONERR GOTO 275
246 VTAB 8: HTAB 24: INVERSE : PRINT "INITIALIZING": NORMAL
250 PRINT D$;"INIT XXX,S";SS;",D";SD;",V"; PEEK(714)
251 VTAB 8: HTAB 24: PRINT " "
252 POKE 216,0: POKE 222,0
253 GOTO 256
255 DK$ = "DUPLICATE": GOSUB 360: REM GET DUP DISK
256 VTAB 8: HTAB 24: INVERSE : PRINT "WRITING";: NORMAL : PRINT " "
260 CALL 710: REM WRITE A HUNK
265 VTAB 8: HTAB 24: PRINT " "
270 IF PEEK(713) < >2 THEN 190
275 IF PEEK(222) = 255 THEN STOP
277 VTAB 18: INVERSE : PRINT "****** UNABLE TO WRITE ******<CTRL-G><CTRL-G>": GOTO 290
280 VTAB 18: INVERSE : PRINT "****** UNABLE TO READ ******<CTRL-G><CTRL-G>"
290 VTAB 19: NORMAL : POKE -16368,0: PRINT : INPUT "DO YOU WISH TO MAKE ANOTHER COPY?";I$: IF LEN(I$) = 0 THEN 300
295 IF LEFT$(I$,1) = "Y" THEN 160
300 IF LEFT$(I$,1) < >"N" THEN 290
305 TEXT : HOME : CALL 672: DEL 70,70: END
310 PRINT : HTAB 1: PRINT I$;" SLOT: ";:L = 1:H = 7: GOSUB 350: PRINT N;: NORMAL : HTAB 30: GOSUB 330: RETURN
320 GOSUB 350: PRINT N;: NORMAL : HTAB 4: PRINT " DRIVE: ";:L = 1:H = 2: GOSUB 330: RETURN
330 HTAB 32: GET K$:K = ASC(K$) +128
335 IF K = 141 THEN 340
336 K = K -176: IF K <L OR K >H THEN 330
337 N = K
340 HTAB 20: PRINT N;" ": RETURN
350 INVERSE : HTAB 22: PRINT "DEFAULT = ";: RETURN
360 IF MS < >SS THEN RETURN
370 IF MD < >SD THEN RETURN
375 HOME : IF LEFT$(DK$,1) = "D" THEN PRINT
380 PRINT "INSERT ";DK$;" DISK AND PRESS RETURN";: INPUT " ";DK$
385 CALL -936
390 RETURN
395 POKE 222,0: CALL RWTS: IF PEEK(222) = 0 THEN RETURN
397 POP
400 HOME : PRINT "ERROR TRYING TO ADD DATE/TIME STAMP!!! ": IF PEEK(IOB +13) = 16 THEN PRINT "DISK IS WRITE PROTECTED"
420 PRINT "RETRY ADDING DATE/TIME STAMP(Y OR N)?";
430 GET A$: IF A$ < >"Y" AND A$ < >"N" THEN PRINT CHR$(7);: GOTO 430
440 PRINT : HOME : IF A$ = "Y" THEN 194
450 GOTO 200